package com.yuelao.yuelao_backend.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 货币交易记录表
 */
@Data
@TableName("coin_transactions")
public class CoinTransaction implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 交易对方用户ID（转账时使用）
     */
    private Long counterpartyUserId;

    /**
     * 交易类型: earn-获得, spend-消费, transfer_in-转入, transfer_out-转出
     */
    private String type;

    /**
     * 金额（以分为单位，正数为获得，负数为消费）
     */
    private Integer amount;

    /**
     * 手续费金额（以分为单位）
     */
    private Integer feeAmount;

    /**
     * 交易前余额（以分为单位）
     */
    private Integer balanceBefore;

    /**
     * 交易后余额（以分为单位）
     */
    private Integer balanceAfter;

    /**
     * 来源
     */
    private String source;

    /**
     * 标题
     */
    private String title;

    /**
     * 描述
     */
    private String description;

    /**
     * 备注（转账留言）
     */
    private String remark;

    /**
     * 关联ID
     */
    private Long relatedId;

    /**
     * 关联类型
     */
    private String relatedType;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
}
